Skip to content

USHIFT-6836: Bump cert manager to 19.0 with trust-manager support#6552

Open
eslutsky wants to merge 5 commits intoopenshift:mainfrom
eslutsky:bump-cert-manager-to-19.0
Open

USHIFT-6836: Bump cert manager to 19.0 with trust-manager support#6552
eslutsky wants to merge 5 commits intoopenshift:mainfrom
eslutsky:bump-cert-manager-to-19.0

Conversation

@eslutsky
Copy link
Copy Markdown
Contributor

@eslutsky eslutsky commented Apr 21, 2026

Summary

Rebases the cert-manager operator from the v4.22 operator index (cert-manager-operator.v1.19.0) and adds TrustManager addon support.

Key changes:

  • Rebase cert-manager operator to v1.19.0 from registry.redhat.io/redhat/redhat-operator-index:v4.22
  • Add TrustManager CRDs: operator.openshift.io_trustmanagers.yaml and customresourcedefinition_bundles.trust.cert-manager.io.yml
  • Add new RBAC resources for featuregate access: featuregate_clusterrole.yaml and featuregate_clusterrole_binding.yaml
  • Update assets_cert_manager.yaml rebase manifest to include the new CRD and RBAC files
  • Fix RPM spec to package .yml files in addition to .yaml (*.{yaml,yml} glob)

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 21, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 21, 2026

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 21, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Bumps cert-manager to v1.19.x: updates multiple CRD metadata/schemas, adds TrustManager and Bundle CRDs, adjusts list semantics and printer columns, extends RBAC, updates images/releases, adds trusted CA ConfigMap, and updates kustomize/packaging and auto-rebase assets.

Changes

Cohort / File(s) Summary
Core cert-manager CRDs
assets/optional/cert-manager/crd/bases/certificaterequests.cert-manager.io-crd.yaml, assets/optional/cert-manager/crd/bases/certificates.cert-manager.io-crd.yaml, assets/optional/cert-manager/crd/bases/challenges.acme.cert-manager.io-crd.yaml, assets/optional/cert-manager/crd/bases/clusterissuers.cert-manager.io-crd.yaml, assets/optional/cert-manager/crd/bases/issuers.cert-manager.io-crd.yaml, assets/optional/cert-manager/crd/bases/orders.acme.cert-manager.io-crd.yaml
Bumped CRD labels/versions and adjusted printerColumn jsonPaths; clarified issuerRef docs/defaults; added rfc2136.protocol (TCP/UDP) and http01 podTemplate resources; added/adjusted many x-kubernetes-list-type / list-map-keys annotations.
OpenShift/operator CRDs
assets/optional/cert-manager/crd/bases/operator.openshift.io_certmanagers.yaml, assets/optional/cert-manager/crd/bases/operator.openshift.io_istiocsrs.yaml
Updated controller-gen annotation and schema descriptions (env var fileKeyRef, issuerRef defaults, affinity text), and added/adjusted schema fields and list annotations.
New CRDs: TrustManager & Bundle
assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml, assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml
Added cluster-scoped TrustManager CRD (v1alpha1) with singleton/name and cross-field validations and status; added cluster-scoped Bundle CRD (trust.cert-manager.io v1alpha1) with schema, printer columns, and status.
Manager deployment & ConfigMap
assets/optional/cert-manager/manager/manager.yaml, assets/optional/cert-manager/manager/trusted_ca_bundle_configmap.yaml
Pinned RELATED_IMAGE_* env vars to specific cert-manager/trust-manager versions, bumped operand/operator version vars, and added trusted-ca-bundle ConfigMap for OpenShift CA injection.
Image manifests & release metadata
assets/optional/cert-manager/manager/images-aarch64.yaml, assets/optional/cert-manager/manager/images-x86_64.yaml, assets/optional/cert-manager/release-cert-manager-aarch64.json, assets/optional/cert-manager/release-cert-manager-x86_64.json
Replaced image digests/pinned images for cert-manager components and bumped release.base from 1.18.11.19.0.
RBAC & kustomize updates
assets/optional/cert-manager/rbac/kustomization.yaml, assets/optional/cert-manager/rbac/role.yaml, assets/optional/cert-manager/crd/kustomization.yaml
Added featuregate RBAC manifests to kustomization; extended ClusterRole with operator.openshift.io trustmanager and trust.cert-manager.io bundle permissions; added new CRD bases to CRD kustomization.
Auto-rebase scripts/assets
scripts/auto-rebase/last_rebase_cert_manager.sh, scripts/auto-rebase/assets_cert_manager.yaml
Updated operator index target tag (v4.21 → v4.22) and added new CRD asset entries to the auto-rebase asset list.
Packaging/spec change
packaging/rpm/microshift.spec
Expanded RPM install glob to include both .yaml and .yml CRD base files.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 12
✅ Passed checks (12 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PR modifies only Kubernetes manifests, configs, and scripts—no Ginkgo test files present, making this check inapplicable.
Test Structure And Quality ✅ Passed The pull request contains only infrastructure and configuration changes (YAML CRDs, JSON manifests, shell scripts, and RPM specs) related to bumping cert-manager to v1.19.0. No Ginkgo test files or test code changes are included.
Microshift Test Compatibility ✅ Passed This pull request does not add any new Ginkgo e2e tests. All changes are limited to Kubernetes CRD definitions, deployment configurations, RBAC manifests, and build/packaging files for the cert-manager operator.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PR contains no Ginkgo e2e tests; only Kubernetes manifests, JSON configs, shell scripts, and RPM specs. Check not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed No topology-breaking scheduling constraints detected in cert-manager v1.19.0 bump. Deployment manifest contains only image/environment updates without pod affinity, topology constraints, or control-plane selectors. New CRDs are schema definitions allowing optional user-configured affinity only.
Ote Binary Stdout Contract ✅ Passed PR contains no Go source code modifications, only YAML, JSON, shell scripts, and RPM spec files. OTE Binary Stdout Contract check is not applicable.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR contains no new Ginkgo e2e tests; only manifest files, configs, RPM specs, and scripts.
Title check ✅ Passed The title accurately summarizes the main objective: bumping cert-manager to v1.19.0 and adding trust-manager support, which aligns with the comprehensive changes across CRDs, manifests, and configurations.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 21, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: eslutsky

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 21, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@assets/optional/cert-manager/manager/manager.yaml`:
- Around line 87-96: The RELATED_IMAGE_CERT_MANAGER_TRUST_MANAGER is hardcoded
in manager.yaml and not included in the cert-manager image pipeline, so add
trust-manager to the same release metadata/configmap used for other operands
(e.g., cert-manager-images) and update manager.yaml to reference the
pinned/mirrored entry instead of the Quay tag; specifically, add a trust-manager
image key/value into the cert-manager-images ConfigMap and the per-arch image
lists (assets/optional/cert-manager/manager/images-x86_64.yaml,
images-aarch64.yaml) and release metadata (release-cert-manager-aarch64.json) so
the image pipeline generates a RELATED_IMAGE_CERT_MANAGER_TRUST_MANAGER entry
that manager.yaml can consume, ensuring disconnected installs and digest pinning
work as with the other RELATED_IMAGE_* variables.

In `@assets/optional/cert-manager/manager/trusted_ca_bundle_configmap.yaml`:
- Around line 1-7: Add the new ConfigMap manifest to the manager component
kustomization resources and set the environment variable
TRUSTED_CA_CONFIGMAP_NAME in the manager Deployment to "trusted-ca-bundle";
specifically, add the
assets/optional/cert-manager/manager/trusted_ca_bundle_configmap.yaml entry to
the resources list in assets/optional/cert-manager/manager/kustomization.yaml
and update the manager Deployment/PodSpec env var TRUSTED_CA_CONFIGMAP_NAME in
manager.yaml (the container spec that sets this env) to the literal value
trusted-ca-bundle so the operator receives the correct ConfigMap name for
trusted CA bundle injection.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 3fd9df91-5d4f-4d4d-b0e1-bace9cc0ac48

📥 Commits

Reviewing files that changed from the base of the PR and between 652f9af and a23ac77.

📒 Files selected for processing (18)
  • assets/optional/cert-manager/crd/bases/certificaterequests.cert-manager.io-crd.yaml
  • assets/optional/cert-manager/crd/bases/certificates.cert-manager.io-crd.yaml
  • assets/optional/cert-manager/crd/bases/challenges.acme.cert-manager.io-crd.yaml
  • assets/optional/cert-manager/crd/bases/clusterissuers.cert-manager.io-crd.yaml
  • assets/optional/cert-manager/crd/bases/issuers.cert-manager.io-crd.yaml
  • assets/optional/cert-manager/crd/bases/operator.openshift.io_certmanagers.yaml
  • assets/optional/cert-manager/crd/bases/operator.openshift.io_istiocsrs.yaml
  • assets/optional/cert-manager/crd/bases/orders.acme.cert-manager.io-crd.yaml
  • assets/optional/cert-manager/crd/kustomization.yaml
  • assets/optional/cert-manager/manager/images-aarch64.yaml
  • assets/optional/cert-manager/manager/images-x86_64.yaml
  • assets/optional/cert-manager/manager/manager.yaml
  • assets/optional/cert-manager/manager/trusted_ca_bundle_configmap.yaml
  • assets/optional/cert-manager/rbac/kustomization.yaml
  • assets/optional/cert-manager/rbac/role.yaml
  • assets/optional/cert-manager/release-cert-manager-aarch64.json
  • assets/optional/cert-manager/release-cert-manager-x86_64.json
  • scripts/auto-rebase/last_rebase_cert_manager.sh

Comment thread assets/optional/cert-manager/manager/manager.yaml
Comment thread assets/optional/cert-manager/manager/trusted_ca_bundle_configmap.yaml Outdated
@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 22, 2026
@eslutsky eslutsky force-pushed the bump-cert-manager-to-19.0 branch from e6eb3b8 to cbea015 Compare April 22, 2026 12:20
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml`:
- Around line 33-37: The CRD condition type is inconsistent: the description and
documented known condition use "Bundle" while the jsonPath entries use "Synced";
update the jsonPath/name/type/description entries under the Bundle condition
block so they consistently reference the same condition type (either rename the
jsonPath filter and name from "Synced" to "Bundle" or update the documented
known condition to "Synced"), e.g. make the jsonPath .status.conditions[?(@.type
== "Bundle")].status and .reason match the "Bundle" description; check and
update all occurrences of "Synced" and "Bundle" in this CRD (including the
jsonPath for .status.conditions[*].status and .reason) so they are aligned.

In
`@assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml`:
- Around line 1210-1224: The trustNamespace field currently only validates
length and immutability; add a DNS-1123 label pattern check so invalid namespace
names (e.g., starting with digits or containing underscores) are rejected early.
Update the trustNamespace schema to include an x-kubernetes-validations or
pattern entry enforcing the regex ^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$ (or
equivalent) and adjust the description to mention it must follow DNS-1123 label
rules; reference the trustNamespace property and its existing
x-kubernetes-validations block when applying this change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 3a88cb37-5974-4895-b2a0-41167b0d3e61

📥 Commits

Reviewing files that changed from the base of the PR and between e6eb3b8 and cbea015.

📒 Files selected for processing (3)
  • assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml
  • assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml
  • scripts/auto-rebase/assets_cert_manager.yaml
✅ Files skipped from review due to trivial changes (1)
  • scripts/auto-rebase/assets_cert_manager.yaml

Comment on lines +33 to +37
jsonPath: .status.conditions[?(@.type == "Synced")].status
name: Synced
type: string
- description: Reason Bundle has Synced status
jsonPath: .status.conditions[?(@.type == "Synced")].reason
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Condition type text conflicts with actual condition key.

Line 405 documents Bundle as the known condition type, but Line 33 and Line 37 use Synced. One of these is stale and should be aligned.

Suggested doc fix
-                    Known condition types are `Bundle`.
+                    Known condition types are `Synced`.

Also applies to: 403-406

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml`
around lines 33 - 37, The CRD condition type is inconsistent: the description
and documented known condition use "Bundle" while the jsonPath entries use
"Synced"; update the jsonPath/name/type/description entries under the Bundle
condition block so they consistently reference the same condition type (either
rename the jsonPath filter and name from "Synced" to "Bundle" or update the
documented known condition to "Synced"), e.g. make the jsonPath
.status.conditions[?(@.type == "Bundle")].status and .reason match the "Bundle"
description; check and update all occurrences of "Synced" and "Bundle" in this
CRD (including the jsonPath for .status.conditions[*].status and .reason) so
they are aligned.

@eslutsky eslutsky force-pushed the bump-cert-manager-to-19.0 branch from cbea015 to 780e7af Compare April 22, 2026 12:34
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml (1)

1210-1223: ⚠️ Potential issue | 🟡 Minor

Validate trustNamespace as a real Kubernetes namespace name.

Length + immutability still allow invalid values like uppercase or underscores, so bad configs can get admitted and only fail later during reconciliation. Add a DNS-1123 label pattern here.

Suggested schema hardening
                   trustNamespace:
                     default: cert-manager
                     description: |-
                       trustNamespace is the namespace where trust-manager looks for trust sources
                       (ConfigMaps and Secrets containing CA certificates).
                       Defaults to "cert-manager" if not specified.
                       This field is immutable once set.
+                      This field must be a valid DNS-1123 label.
                       This field can have a maximum of 63 characters.
                     maxLength: 63
                     minLength: 1
+                    pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
                     type: string
                     x-kubernetes-validations:
                     - message: trustNamespace is immutable once set
                       rule: oldSelf == '' || self == oldSelf
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml`
around lines 1210 - 1223, The trustNamespace schema currently enforces length
and immutability but not DNS-1123 label format, so add a pattern validation for
the trustNamespace field to ensure it matches Kubernetes namespace rules
(DNS-1123 label: lowercase alphanumeric and '-', start/end with alphanumeric).
Update the trustNamespace schema (the trustNamespace property under
operator.openshift.io_trustmanagers.yaml) by adding a pattern key with the
DNS-1123 label regex and/or an additional x-kubernetes-validations entry that
enforces the regex (augmenting the existing x-kubernetes-validations array
rather than replacing it) so invalid values with uppercase letters or
underscores are rejected at admission time.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In
`@assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml`:
- Around line 1210-1223: The trustNamespace schema currently enforces length and
immutability but not DNS-1123 label format, so add a pattern validation for the
trustNamespace field to ensure it matches Kubernetes namespace rules (DNS-1123
label: lowercase alphanumeric and '-', start/end with alphanumeric). Update the
trustNamespace schema (the trustNamespace property under
operator.openshift.io_trustmanagers.yaml) by adding a pattern key with the
DNS-1123 label regex and/or an additional x-kubernetes-validations entry that
enforces the regex (augmenting the existing x-kubernetes-validations array
rather than replacing it) so invalid values with uppercase letters or
underscores are rejected at admission time.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 258f0bd8-09a6-4d4e-8cdb-4bb37781a61d

📥 Commits

Reviewing files that changed from the base of the PR and between cbea015 and 780e7af.

📒 Files selected for processing (4)
  • assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml
  • assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml
  • packaging/rpm/microshift.spec
  • scripts/auto-rebase/assets_cert_manager.yaml
✅ Files skipped from review due to trivial changes (1)
  • scripts/auto-rebase/assets_cert_manager.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml

@eslutsky eslutsky force-pushed the bump-cert-manager-to-19.0 branch from 780e7af to 394dddb Compare April 22, 2026 12:50
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (2)
assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml (1)

1210-1223: ⚠️ Potential issue | 🟡 Minor

Validate trustNamespace as a namespace name.

Length + immutability still admit invalid values like bad_name, which won't be usable as a Kubernetes namespace. Add a DNS-1123 label pattern here so bad configs are rejected at admission time.

Suggested schema hardening
                   trustNamespace:
                     default: cert-manager
                     description: |-
                       trustNamespace is the namespace where trust-manager looks for trust sources
                       (ConfigMaps and Secrets containing CA certificates).
                       Defaults to "cert-manager" if not specified.
                       This field is immutable once set.
                       This field can have a maximum of 63 characters.
+                    pattern: '^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$'
                     maxLength: 63
                     minLength: 1
                     type: string
What is the Kubernetes namespace naming rule (DNS-1123 label) and the canonical regex used to validate namespace names?
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml`
around lines 1210 - 1223, The trustNamespace schema currently only enforces
length and immutability but not the DNS-1123 label format; update the
trustNamespace property in the CRD (the trustNamespace schema block) to include
the Kubernetes namespace/DNS-1123 label regex (canonical:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$) as a pattern constraint (keep maxLength: 63 and
minLength: 1) so invalid names like "bad_name" are rejected at admission time,
and optionally clarify the description to mention the DNS-1123 label
requirement.
assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml (1)

32-37: ⚠️ Potential issue | 🟡 Minor

Make the condition type consistent.

The printer columns filter on Synced, but the status schema says the known condition type is Bundle. One of these is stale; if the controller emits the other value, the kubectl get columns stay empty.

Also applies to: 403-405

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml`
around lines 32 - 37, The condition type is inconsistent between the
printerColumns JSONPaths (which filter for .status.conditions[?(@.type ==
"Synced")] and the CRD status schema (which lists a known condition type
"Bundle"); pick one canonical condition type and make both places match: update
the status.conditions knownTypes entry (or the printerColumn jsonPath) so the
condition name (the "name" field and the jsonPath filter) and the schema's
condition type string are identical (e.g., change "Bundle" → "Synced" everywhere
or vice versa) including the related status.reason jsonPath entries referenced
in the diff and the other occurrences noted (the other similar block around the
403-405 region).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml`:
- Around line 222-223: The documentation text for the Bundle status field
references a non-existent field name: change any occurrences of
"defaultCAPackageVersion" in the Bundle description to "defaultCAVersion" so it
matches the schema (.status.defaultCAVersion); update the two places called out
(around the current snippet and the other occurrence at lines ~463-468) to use
the exact symbol "defaultCAVersion" and ensure any explanatory text refers to
the Bundle's status field as ".status.defaultCAVersion".
- Around line 80-97: The schema currently allows invalid Bundle specs because it
doesn't enforce the documented mutual exclusions; update the CRD schema in
customresourcedefinition_bundles.trust.cert-manager.io.yml to add OpenAPI
validation for both source blocks (the main source and the secret source) that:
(1) disallow includeAllKeys and key being set together (make them mutually
exclusive), and (2) disallow name and selector being set together (make them
mutually exclusive); implement this by adding appropriate anyOf/oneOf validation
clauses (or an xor-style anyOf with required lists) referencing the
includeAllKeys, key, name and selector properties so invalid combinations are
rejected at admission for Bundle objects.

---

Duplicate comments:
In
`@assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml`:
- Around line 32-37: The condition type is inconsistent between the
printerColumns JSONPaths (which filter for .status.conditions[?(@.type ==
"Synced")] and the CRD status schema (which lists a known condition type
"Bundle"); pick one canonical condition type and make both places match: update
the status.conditions knownTypes entry (or the printerColumn jsonPath) so the
condition name (the "name" field and the jsonPath filter) and the schema's
condition type string are identical (e.g., change "Bundle" → "Synced" everywhere
or vice versa) including the related status.reason jsonPath entries referenced
in the diff and the other occurrences noted (the other similar block around the
403-405 region).

In
`@assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml`:
- Around line 1210-1223: The trustNamespace schema currently only enforces
length and immutability but not the DNS-1123 label format; update the
trustNamespace property in the CRD (the trustNamespace schema block) to include
the Kubernetes namespace/DNS-1123 label regex (canonical:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$) as a pattern constraint (keep maxLength: 63 and
minLength: 1) so invalid names like "bad_name" are rejected at admission time,
and optionally clarify the description to mention the DNS-1123 label
requirement.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 942161a2-034e-4e83-abe2-22dfd4897153

📥 Commits

Reviewing files that changed from the base of the PR and between 780e7af and 394dddb.

📒 Files selected for processing (4)
  • assets/optional/cert-manager/crd/bases/customresourcedefinition_bundles.trust.cert-manager.io.yml
  • assets/optional/cert-manager/crd/bases/operator.openshift.io_trustmanagers.yaml
  • packaging/rpm/microshift.spec
  • scripts/auto-rebase/assets_cert_manager.yaml
✅ Files skipped from review due to trivial changes (1)
  • packaging/rpm/microshift.spec
🚧 Files skipped from review as they are similar to previous changes (1)
  • scripts/auto-rebase/assets_cert_manager.yaml

@eslutsky eslutsky force-pushed the bump-cert-manager-to-19.0 branch 4 times, most recently from a522292 to 958f859 Compare April 22, 2026 15:00
@eslutsky eslutsky changed the title Bump cert manager to 19.0 Bump cert manager to 19.0 with trust-manager support Apr 22, 2026
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 22, 2026
@eslutsky eslutsky force-pushed the bump-cert-manager-to-19.0 branch from 5d7634e to 65fa9ad Compare April 22, 2026 15:36
@eslutsky eslutsky changed the title Bump cert manager to 19.0 with trust-manager support USHIFT-6836: Bump cert manager to 19.0 with trust-manager support Apr 22, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Apr 22, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 22, 2026

@eslutsky: This pull request references USHIFT-6836 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

Rebases the cert-manager operator from the v4.22 operator index (cert-manager-operator.v1.19.0) and adds TrustManager addon support.

Key changes:

  • Rebase cert-manager operator to v1.19.0 from registry.redhat.io/redhat/redhat-operator-index:v4.22
  • Add TrustManager CRDs: operator.openshift.io_trustmanagers.yaml and customresourcedefinition_bundles.trust.cert-manager.io.yml
  • Add new RBAC resources for featuregate access: featuregate_clusterrole.yaml and featuregate_clusterrole_binding.yaml
  • Enable TrustManager addon via kustomize patch setting UNSUPPORTED_ADDON_FEATURES=TrustManager=true
  • Add dynamic system CA bundle injection: the microshift-cert-manager RPM ships a systemd ExecStartPre drop-in that copies the host CA bundle into the manifests directory on each start, and a kustomize configMapGenerator creates the cert-manager-operator-trusted-ca-bundle ConfigMap from it
  • Update assets_cert_manager.yaml rebase manifest to include the new CRD and RBAC files
  • Fix RPM spec to package .yml files in addition to .yaml (*.{yaml,yml} glob)

CA Bundle Injection

In OpenShift, the cluster network operator injects system CA bundles into ConfigMaps labeled with config.openshift.io/inject-trusted-cabundle: "true". MicroShift lacks this operator, so this PR implements an equivalent mechanism:

  1. systemd ExecStartPre (microshift-cert-manager-update-ca-bundle) copies /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem to the cert-manager manifests directory
  2. kustomize configMapGenerator creates the trusted-ca-bundle ConfigMap from the copied file
  3. The CA bundle is refreshed on every MicroShift restart

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@eslutsky eslutsky marked this pull request as ready for review April 23, 2026 09:41
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 23, 2026
@openshift-ci openshift-ci Bot requested review from jogeo and pacevedom April 23, 2026 09:41
@eslutsky eslutsky force-pushed the bump-cert-manager-to-19.0 branch from 21882af to 9ee2a08 Compare April 23, 2026 18:48
@eslutsky
Copy link
Copy Markdown
Contributor Author

/retest

@eslutsky eslutsky force-pushed the bump-cert-manager-to-19.0 branch from 9ee2a08 to e7b218c Compare April 29, 2026 08:54
@openshift-ci openshift-ci Bot added needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. and removed needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Apr 29, 2026
@eslutsky eslutsky force-pushed the bump-cert-manager-to-19.0 branch from 310175b to 48ecb24 Compare April 30, 2026 08:22
Signed-off-by: Evgeny Slutsky <eslutsky@redhat.com>
@eslutsky eslutsky force-pushed the bump-cert-manager-to-19.0 branch from 48ecb24 to 137cd5a Compare April 30, 2026 10:04
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 30, 2026

@eslutsky: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants